
; (function (window, undefined) {
    function init(el) {
        //this  全等于  实例化对象
        //获取所有数据
        let els = document.querySelectorAll(el)
        //遍历数据，将js dom 绑定到jq对象上
        for (let i = 0; i < el.length; i++) {
            //i索引；ele[i] 获取js标签对象
            this[i] = els[i]
        }
        this.length = els.length
        /* //简写
        let arr = []
        arr.push.apply(this,els) */
    }
    let jQuery = function (el) {    //element
        return new init(el)
    }
    //给jq增加一个快捷操作  也就是静态方法  该静态方法可以init添加原型方法
    //jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。
    jQuery.extend = function(object){
        for(let key in object){
            init.prototype[key] = object[key]
        }
    }
    //原型方法
    //jQuery.prototype = {
    // 改变原型的this
    init.prototype = {
        //添加样式
        css(cssAttr, cssValue) {
            //console.log(1,this); ===构造函数中的this === 实例化this
            for (let i = 0; i < this.length; i++) {
                this[i].style[cssAttr] = cssValue;
            }
            return this
        },
        //添加属性
        attr(attrClass,attrValue) { 
            for(let i=0;i<this.length;i++){
                this[i].setAttribute([attrClass],attrValue)
            }
            return this
        },
        //移除属性
        removeAttr(attrClass){
            for(let i=0; i<this.length; i++){
                this[i].removeAttribute(attrClass)
            }
        },
        //添加class
        addClass(className){
            for(let i=0; i<this.length; i++){
                this[i].classList.add(className);
            }
        },
        //移除class
        removeClass(className){
            for(let i=0; i<this.length; i++){
                this[i].classList.remove(className);
            }
        }
    }

    window.jQuery = window.$ = jQuery
})(window)